
package com.xbongbong.pro.statistic.model;

import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.pro.domain.entity.ChartEntity;
import com.xbongbong.pro.statistic.enums.ChartTypeEnum;
import com.xbongbong.pro.statistic.enums.SystemCodeEnum;

import java.util.List;
import java.util.Map;

/**
 * @author autoGen
 * @time 2019-01-07 11:13:40
 */
public interface ChartModel extends IModel<ChartEntity> {

	@Override
	List<ChartEntity> findEntitys(Map<String ,Object> param);

	List<ChartEntity> findMutiEntitys(Map<String ,Object> param);

	/**
	 * 保存
	 * @param entity 实体
	 * @return
	 * @throws
	 *
	 * @author hongxiao
	 * @date: 2019-02-22 15:07
	 * @since v1.0
	 * @version v1.0
	 */
	Integer save(ChartEntity entity);

    /**
     * 批量插入数据
     *
     * @param entityList 实体列表
     * @author GuoJun.HU
     * @date 2019/2/18 22:07
     * @since V1.0
     */
    void insertBatch(List<ChartEntity> entityList);

    /**
     * 通过主键删除
     *
     * @param key    主键
     * @param corpid 公司id
     * @return Integer
     * @author GuoJun.HU
     * @date 2019/2/18 22:07
     * @since V1.0
     */
    Integer deleteByKey(Long key, String corpid);

    /**
     * 通过主键获取数据
     *
     * @param key    主键
     * @param corpid 公司id
     * @return ChartEntity
     * @author GuoJun.HU
     * @date 2019/2/18 22:08
     * @since V1.0
     */
    ChartEntity getByKey(Long key, String corpid);

    /**
     * 根据分类id获取图表列表
     *
     * @param corpid     公司id
     * @param categoryId 分类id
     * @return java.util.List<com.xbongbong.pro.domain.entity.ChartEntity>
     * @author zcp
     * @date 2019/1/16 15:31
     * @version v1.0
     * @since v1.0
     */
    List<ChartEntity> getChartListByCategoryId(String corpid, Long categoryId);

	/**
	 * 判断同名的指标是否存在
	 * @param corpid 公司id
	 * @param name 名称
	 * @param setId 指标名称
	 * @param chartType 指标类型
	 * @param statisticsType 图表类型  1-系统  2-自定义
	 * @return
	 * @throws
	 *
	 * @author hongxiao
	 * @date: 2019-02-01 11:22
	 * @since v1.0
	 * @version v1.0
	 */
	boolean checkRepeat(String corpid, String name, Long setId, Integer chartType, Integer statisticsType);

	/**
	 * 获取业绩目标指标
	 *
	 * @param corpid    公司id
	 * @param enable    是否启用
	 * @param chartType 报表类型枚举ChartTypeEnum.PERFORMANCE对应的code(16为业绩目标）
	 * @return 目标list
	 * @author hongxiao
	 * @date: 2019-01-30 15:24
	 * @version v1.0
	 * @since v1.0
	 * @update by zcp 从main-service移入 2019-03-27
	 */
	List<ChartEntity> getList(String corpid, Integer enable, Integer chartType);

	/**
	 * 获取业绩目标指标
	 *
	 * @param corpid    公司id
	 * @param enable    是否启用
	 * @param chartType 报表类型枚举ChartTypeEnum.PERFORMANCE对应的code(16为业绩目标）
	 * @return 目标list
	 * @author hongxiao
	 * @date: 2019-01-30 15:24
	 * @version v1.0
	 * @since v1.0
	 * @update by zcp 从main-service移入 2019-03-27
	 */
	List<ChartEntity> getList(String corpid, Integer enable, Integer chartType,String orderByStr);

	ChartEntity getSearch(String corpid,  Long categoryId);

	/**
	 * 公共系统指标的code得到相应图表实体
	 * @param corpid 公司id
	 * @param systemCodeEnum 系统指标枚举
	 * @return com.xbongbong.pro.domain.entity.ChartEntity
	 * @author zcp
	 * @date 2019/5/6 16:36
	 * @since v1.0
	 * @version v1.0
	 */
	ChartEntity getSystemChartByCode(String corpid, SystemCodeEnum systemCodeEnum);

	/**
	 * 通过chartType得到图表
	 * 主要是移动端业绩目标要穿透到图表中心，而图表中心只有一个“目标完成情况”的一级分类，首页业绩目标是各个图表（其父分类id不是“目标完成情况”），因此需要获取该“目标完成情况”的分类id
	 * @param corpid 公司id
	 * @param chartTypeEnum 图表类型枚举
	 * @return com.xbongbong.pro.domain.entity.ChartEntity
	 * @author zcp
	 * @date 2019/5/21 11:17
	 * @since v1.0
	 * @version v1.0
	 */
	ChartEntity getEntityByChartType(String corpid, ChartTypeEnum chartTypeEnum);


	List<ChartEntity> getStockChartList();

	/**
	 * 批量更新enable
	 * @param param 查询参数map
	 * @author xingxing.xiao
	 */
	void batchUpdateEnable(Map<String, Object> param);

	void batchUpdateNumFormat(String corpid, List<Long> idIn, Integer numFormat);

	List<ChartEntity> getReturnStockChartList();

    List<ChartEntity> getEntitysByNewData();

    /**
     * 批量更新数据
     * @param chartEntityList
     * @param corpid
     * @return void
     */
    void updateBatch(List<ChartEntity> chartEntityList, String corpid);

    void updateName(Long id, String corpid ,String name, String oldName, String memo);

	void updateButtonAttr(Long id, String corpid , String buttonAttr);

	/**
	 * 脚本专用：阶段设置内失败阶段开启/关闭模式改为使用阶段的类型，即只处理button_attr字段、且不限制corpid
	 * 原来是使用的枚举 ChartConfigEnum
	 * 改为按照类型 控制显隐：结束阶段-失败、结束阶段-取消
	 * @param chartEntityList
	 * @return void
	 * @author zcp
	 * @since v1.0
	 * @version v1.0
	 */
	void updateBatchButtonAttr(List<ChartEntity> chartEntityList);
}

 
